import math
a, v = list(map(int, input().split()))
l, d, w = list(map(int, input().split()))
time_to_reach_max = v / a
length_to_reach_max = (v * v) / (2 * a)
velocity_at_sign = math.sqrt(2 * d * a)
if length_to_reach_max <= d:
if v <= w:
print("%.5f" % (time_to_reach_max + ((l - length_to_reach_max) / v)))
else:
TIME_BEFORE_SIGN = 0
velocity_diff = v - w
time_to_reach_diff = velocity_diff / a
length_to_peak_velocity_from_sign = ((velocity_diff * velocity_diff) / (2 * a)) + (w * time_to_reach_diff)
peak_2_from_berland = d - length_to_peak_velocity_from_sign
if peak_2_from_berland >= length_to_reach_max:
TIME_BEFORE_SIGN = time_to_reach_diff + time_to_reach_max + ((peak_2_from_berland - length_to_reach_max) / v)
else:
time_to_reach_w = w / a
length_to_reach_w = (w * w) / (2 * a)
distance_left = d - length_to_reach_w
time_to_sign = (((-1) * w) + math.sqrt((w ** 2) + (a * distance_left))) / a
TIME_BEFORE_SIGN = time_to_reach_w + (2 * time_to_sign)
TIME_AFTER_SIGN = 0
time_to_max = (v - w) / a
length_to_max = (((v - w) * (v - w)) / (2 * a)) + (w * time_to_max)
length_rest = l - d
if length_to_max >= length_rest:
TIME_AFTER_SIGN = (((-1) * w) + math.sqrt((w ** 2) + (2 * a * length_rest))) / a
else:
TIME_AFTER_SIGN = time_to_max + ((length_rest - length_to_max) / v)
print("%.5f" % (TIME_BEFORE_SIGN + TIME_AFTER_SIGN))
else:
if velocity_at_sign <= w:
if length_to_reach_max <= l:
print("%.5f" % (time_to_reach_max + ((l - length_to_reach_max) / v)))
else:
print("%.5f" % (math.sqrt((2 * l) / a)))
else:
time_to_reach_w = w / a
length_to_reach_w = (w * w) / (2 * a)
distance_left = d - length_to_reach_w
time_to_sign = (((-1) * w) + math.sqrt((w ** 2) + (a * distance_left))) / a
TIME_BEFORE_SIGN = time_to_reach_w + (2 * time_to_sign)
TIME_AFTER_SIGN = 0
time_to_max = (v - w) / a
length_to_max = (((v - w) * (v - w)) / (2 * a)) + (w * time_to_max)
length_rest = l - d
if length_to_max >= length_rest:
TIME_AFTER_SIGN = (((-1) * w) + math.sqrt((w ** 2) + (2 * a * length_rest))) / a
else:
TIME_AFTER_SIGN = time_to_max + ((length_rest - length_to_max) / v)
print("%.5f" % (TIME_BEFORE_SIGN + TIME_AFTER_SIGN))
841. Keys and Rooms | 152. Maximum Product Subarray |
337. House Robber III | 869. Reordered Power of 2 |
1593C - Save More Mice | 1217. Minimum Cost to Move Chips to The Same Position |
347. Top K Frequent Elements | 1503. Last Moment Before All Ants Fall Out of a Plank |
430. Flatten a Multilevel Doubly Linked List | 1290. Convert Binary Number in a Linked List to Integer |
1525. Number of Good Ways to Split a String | 72. Edit Distance |
563. Binary Tree Tilt | 1306. Jump Game III |
236. Lowest Common Ancestor of a Binary Tree | 790. Domino and Tromino Tiling |
878. Nth Magical Number | 2099. Find Subsequence of Length K With the Largest Sum |
1608A - Find Array | 416. Partition Equal Subset Sum |
1446. Consecutive Characters | 1618A - Polycarp and Sums of Subsequences |
1618B - Missing Bigram | 938. Range Sum of BST |
147. Insertion Sort List | 310. Minimum Height Trees |
2110. Number of Smooth Descent Periods of a Stock | 2109. Adding Spaces to a String |
2108. Find First Palindromic String in the Array | 394. Decode String |